package caihan

/**
 * 其他三方库依赖管理
 *
 * @author Seven-C
 * @date 2020/7/27
 */
object otherLibrary {

    const val loadsir = "com.kingja.loadsir:loadsir:1.3.8"

    //BRVAH https://github.com/CymChad/BaseRecyclerViewAdapterHelper
    const val BRVAH = "com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.6"

    //下拉刷新框架 https://github.com/scwang90/SmartRefreshLayout
    object SmartRefreshLayout {
        private const val refresh_version = "2.0.3"

        //核心必须依赖
        const val layoutKernel = "com.scwang.smart:refresh-layout-kernel:${refresh_version}"

        //经典刷新头
        const val headerClassics = "com.scwang.smart:refresh-header-classics:${refresh_version}"

        //雷达刷新头
        const val headerRadar = "com.scwang.smart:refresh-header-radar:${refresh_version}"

        //虚拟刷新头
        const val headerFalsify = "com.scwang.smart:refresh-header-falsify:${refresh_version}"

        //谷歌刷新头
        const val headerMaterial = "com.scwang.smart:refresh-header-material:${refresh_version}"

        //二级刷新头
        const val headerTwoLevel = "com.scwang.smart:refresh-header-two-level:${refresh_version}"

        //球脉冲加载
        const val footerBall = "com.scwang.smart:refresh-footer-ball:${refresh_version}"

        //经典加载
        const val footerClassics = "com.scwang.smart:refresh-footer-classics:${refresh_version}"
    }

    //柯基大神的工具类 https://github.com/Blankj/AndroidUtilCode
    const val androidUtilCode = "com.blankj:utilcodex:1.30.6"
    const val freeProguard = "com.blankj:free-proguard:1.0.2"

    //Material Dialogs https://github.com/afollestad/material-dialogs
    object materialDialogs {
        private const val material_dialogs_version = "3.3.0"
        const val core = "com.afollestad.material-dialogs:core:${material_dialogs_version}"
        const val input = "com.afollestad.material-dialogs:input:${material_dialogs_version}"
        const val files = "com.afollestad.material-dialogs:files:${material_dialogs_version}"
        const val color = "com.afollestad.material-dialogs:color:${material_dialogs_version}"
        const val datetime = "com.afollestad.material-dialogs:datetime:${material_dialogs_version}"
        const val bottomsheets =
            "com.afollestad.material-dialogs:bottomsheets:${material_dialogs_version}"
        const val lifecycle =
            "com.afollestad.material-dialogs:lifecycle:${material_dialogs_version}"
    }

    // 沉浸式实现 https://github.com/gyf-dev/ImmersionBar
    object ImmersionBar {
        private const val immersionbar_version = "3.0.0"
        const val common = "com.gyf.immersionbar:immersionbar:${immersionbar_version}"

        //fragment快速实现（可选）
        const val components =
            "com.gyf.immersionbar:immersionbar-components:${immersionbar_version}"

        //kotlin扩展（可选）
        const val commonKtx = "com.gyf.immersionbar:immersionbar-ktx:${immersionbar_version}"
    }

    //okhttp-RxHttp https://github.com/liujingxing/okhttp-RxHttp
    object RxHttp {
        private const val rxhttp_version = "2.3.4"

        //以下3个为必须，
        const val rxhttpCommon = "com.ljx.rxhttp:rxhttp:${rxhttp_version}"

        //rxhttp v2.2.2版本起，需要手动依赖okhttp
        const val rxhttpOkhttp3 = "com.squareup.okhttp3:okhttp:4.8.1"

        //生成RxHttp类，非kotlin项目，请使用annotationProcessor代替kapt
        const val rxhttpCompilerKapt = "com.ljx.rxhttp:rxhttp-compiler:${rxhttp_version}"

        //管理协程生命周期，页面销毁，关闭请求
        const val rxlifeCoroutine = "com.ljx.rxlife:rxlife-coroutine:2.0.0"
        const val rxjava3 = "io.reactivex.rxjava3:rxjava:3.0.2"
        const val rxandroid = "io.reactivex.rxjava3:rxandroid:3.0.0"

        //管理RxJava3生命周期，页面销毁，关闭请求
        const val rxlifeRxjava = "com.ljx.rxlife3:rxlife-rxjava:3.0.0"

        //非必须，根据自己需求选择 RxHttp默认内置了GsonConverter
        const val converterJackson = "com.ljx.rxhttp:converter-jackson:${rxhttp_version}"
        const val converterFastjson = "com.ljx.rxhttp:converter-fastjson:${rxhttp_version}"
        const val converterProtobuf = "com.ljx.rxhttp:converter-protobuf:${rxhttp_version}"
        const val converterSimplexml = "com.ljx.rxhttp:converter-simplexml:${rxhttp_version}"
    }

    object Glide {
        private const val glide_version = "4.12.0"
        const val commom = "com.github.bumptech.glide:glide:${glide_version}"
        const val compiler = "com.github.bumptech.glide:compiler:${glide_version}"
    }

    //减少99%的drawable.xml文件的库 https://github.com/whataa/noDrawable
    const val noDrawable = "com.github.whataa:noDrawable:1.1.1"

    //解决livedata引起的"数据倒灌"问题 https://github.com/KunMinX/UnPeek-LiveData
    const val unpeekLivedata = "com.kunminx.archi:unpeek-livedata:4.5.0-beta1"


    object Retrofit2 {
        private const val retrofit_version = "2.9.0"
        const val retrofit = "com.squareup.retrofit2:retrofit:${retrofit_version}"
        const val converterGson = "com.squareup.retrofit2:converter-gson:${retrofit_version}"

        //直接返回String类型需引入
        const val converterScalars = "com.squareup.retrofit2:converter-scalars:${retrofit_version}"
    }

    //https://github.com/square/okhttp
    object Okhttp3 {
        private const val okhttp3_version = "4.8.1"
        const val okhttp = "com.squareup.okhttp3:okhttp:${okhttp3_version}"
        const val loggingInterceptor = "com.squareup.okhttp3:logging-interceptor:${okhttp3_version}"
        const val urlconnection = "com.squareup.okhttp3:okhttp-urlconnection:${okhttp3_version}"
    }

    //基于SharedPreferences的OkHttp 3的持久性CookieJar实现 https://github.com/franmontiel/PersistentCookieJar
    const val cookieJar = "com.github.franmontiel:PersistentCookieJar:1.0.1"


    //Retrofit辅助工具 https://github.com/DylanCaiCoding/RetrofitHelper
    object RetrofitHelper {
        private const val version = "1.1.1"
        const val common = "com.dylanc:retrofit-helper:${version}"
        const val compilerKapt = "com.dylanc:retrofit-helper-compiler:${version}"
    }

    //https://github.com/DylanCaiCoding/LoadingHelper
    const val LoadingHelper = "com.dylanc:loadinghelper:2.1.0"

    //https://github.com/youth5201314/banner
    const val banner = "com.youth.banner:banner:2.1.0"

    //https://github.com/square/leakcanary
    const val leakcanary = "com.squareup.leakcanary:leakcanary-android:2.7"

    object Agentweb {
        private const val version = "4.1.4"
        const val common = "com.just.agentweb:agentweb:${version}"

        // (可选)
        const val filechooser = "com.just.agentweb:filechooser:${version}"

        // (可选)
        const val downloader = "com.download.library:Downloader:${version}"
    }

}